#pragma once
#include <opencv2/opencv.hpp>
#include <vector>
#include <string>

struct DetectionResult {
    cv::Rect bbox;
    float confidence;
    int class_id;
};

class BaseDetector {
public:
    virtual ~BaseDetector() = default;
    virtual std::vector<DetectionResult> detect(const cv::Mat& image) = 0;
    virtual bool isInitialized() const = 0;

    static BaseDetector* CreateDetector(const std::string& model_path, int devId, int clusterId);
};
